// 导入模块
import Request from 'luch-request'
import { useUserStore } from '@/stores'

// 实例化网络请求
const http = new Request({
	// 配置基地址
	baseURL: 'https://consult-api.itheima.net'
})

// 配置请求拦截器
http.interceptors.request.use(
	(config) => {
		// 设置请求头
		const store = useUserStore()
		const token = store.user.token
		if(token) {
			config.header.Authorization = `Bearer ${token}`
		}
		return config
	}, (error) => {
		return Promise.reject(error)
	})
// 配置响应拦截器
http.interceptors.response.use(
	(res) => {
		if(res.data.code !== 10000) {
			uni.showToast({
				icon: 'error',
				title: res.data.message,
				mask: true
			})
			return Promise.reject(res.data)
		}
		// 解构数据
		return res.data
	}, (error) => {
		// 处理401的错误
		if(error.statusCode === 401) {
			const store = useUserStore()
			store.clearUser()
			// 跳转到登录页面
			reLogin()
			return Promise.reject(error)
		}
		return Promise.reject(error)
	})
	
	const tabbarList = [
		'pages/index/index',
		'pages/wike/index',
		'pages/notify/index',
		'pages/my/index'
	]
	
	// 用户跳转页面
	const reLogin = () => {
		// 获取页面栈
		const pages = getCurrentPages()
		// console.log(pages)
		// 获取当前页面
		const currentPage = pages.at(-1)
		// console.log(currentPage)
		// 获取完整的路由
		const fullPath = currentPage.$page.fullPath
		// 小程序 tabbar 页面  一种是普通页面
		const openType = tabbarList.includes(currentPage.$page.route) ? 'switchTab' : 'redirectTo'
		// 将 fullPath 和 openType 记录到 pinia 中
		const store = useUserStore()
		store.redirectURL = fullPath
		store.openType = openType
		// 跳转到登录页面
		uni.redirectTo({
			url: '/pages/login/index'
		})
	}
	
// 导出 http 实例
export { http }
